﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Artemis;

namespace JAWWS
{
    abstract class SceneGraphNode
    {
        // access fields directly FTW

        public SceneGraphNode child, sibling;

        //virtual abstract void draw(GameObject obj);
        // in a node, if the object is immovable, method will be blank
        //virtual abstract void updateObject();
        //float[] matrix = new float[16];
        // if 

        public float[] LocalTransMatrix = new float[16];
        public float[] IdMatrix  =  {1.0f,0.0f,0.0f,0.0f,
                                     0.0f,1.0f,0.0f,0.0f,
                                     0.0f,0.0f,1.0f,0.0f,
                                     0.0f,0.0f,0.0f,1.0f};
        public uint TexId;
        public uint ShaderID;
        public abstract void draw();
        /*
         * public abstract void updateNode(float transX, float transY, float transZ,
         *                    float scalar, float rotAng, float xaxis,
         *                    float yaxis, float zaxis);
        */
        //public abstract void makeNodeAssociation(GameObject g);
        //public abstract void updateNode();

        public void addChildNode(SceneGraphNode child)
        {
            this.child = child;
        }
        public void addSiblingNode(SceneGraphNode sibling)
        {
            this.sibling = sibling;
        }
    }
}

